rbm_layout(7)
=============

NAME
----
rbm_layout - The layout of a rbm workspace

DESCRIPTION
-----------

An rbm workspace is a set of packaging projects, with a common
configuration, and projects' specific configuration files.

An rbm workspace can be located anywhere on your filesystem, as long
as your are running rbm from this directory or one of its
subdirectories.

A typical rbm workspace that contains two projects named 'project_1'
and 'project_2' will look like this :
----
(rbm-workspace)
  |
  |-- rbm.conf
  |
  |-- out
  |    |
  |    |-- project_1
  |    |    |
  |    |    |-- project_1-0.1.tar.gz
  |    |    |
  |    |    +-- project_1-0.1-1.x86_64.rpm
  |    |
  |    +-- project_2
  |         |
  |         |-- project_2-7.3.tar.bz2
  |         |
  |         +-- project_2-7.1-1.x86_64.rpm
  |
  |-- git_clones
  |    |
  |    |-- project_1
  |    |    +-- source files
  |    |
  |    +-- project_2
  |         +-- source files
  |
  |-- keyring
  |    |
  |    |-- keyring-1
  |    |
  |    +-- keyring-2
  |
  +-- projects
       |
       |-- project_1
       |    |
       |    |-- config
       |    |
       |    |-- project_1.spec
       |    |
       |    |-- bugfix.patch
       |    |
       |    +-- debian_rules
       |
       +-- project_2
            |
            |-- config
            |
            |-- project_2.spec
            |
            +-- debian_rules
----

You will file the following files and directories :

rbm.conf::
        This is the main configuration file, containing generic
        configuration for all projects. This file is mandatory.

out::
        This is the directory where output files are written. Each project has
        its own subdirectory. The output directory path can be changed
        with the 'output_dir' option.

git_clones::
        This is the directory where git clones used to create the
        tarballs are stored. Normally you wouldn't have to do anything
        inside this directory. The path of this directory can be changed
        with the 'git_clone_dir' option.

hg_clones::
        This is the same as git_clones, but for projects that use
        mercurial rather than git. The path of this directory can be
        changed with the 'hg_clone_dir' option.

keyring::
        This is the directory where you can store gpg keyring files.
        Those keyrings contains the keys that are used to check signed
        commits and tags. The path of this directory can be changed with
        the 'gpg_keyring_dir' option.

projects::
        This is the directory containing projects definitions. The path
        of this directory can be changed with the 'projects_dir' option.

projects/project_1/config::
        This is the configuration file for the project_1 project. To
        create a new project, you need to create a new directory with
        a 'config' file inside.

projects/project_1/project_1.spec::
        This is an rpm package template file for project_1. The rpm
        package template could also be defined inside the config file,
        in which case this file does not exist.

projects/project_1/bugfix.patch::
        This is an example patch file, used in the rpm package.

projects/project_1/debian_rules::
        This is an example path for a debian/rules file to be used in
        the debian packaging for the project_1 project. All the debian
        packaging can be defined entirely inside the 'config' file, but
        it is usually convenient to split some of it in separate files.

SEE ALSO
--------
link:rbm.html[rbm(1)],
link:rbm_config.html[rbm_config(1)]
